package com.java110.mall.cart.bmo.storeCart.impl;

import com.java110.mall.cart.bmo.storeCart.IDeleteStoreCartBMO;
import com.java110.core.annotation.Java110Transactional;
import com.java110.dto.storeOrder.StoreCartDto;
import com.java110.dto.storeOrder.StoreOrderCartDto;
import com.java110.intf.cart.IStoreCartInnerServiceSMO;
import com.java110.intf.cart.IStoreOrderCartInnerServiceSMO;
import com.java110.po.storeOrder.StoreCartPo;
import com.java110.po.storeOrder.StoreOrderCartPo;
import com.java110.utils.util.ListUtil;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;

import java.util.List;

@Service("deleteStoreCartBMOImpl")
public class DeleteStoreCartBMOImpl implements IDeleteStoreCartBMO {

    @Autowired
    private IStoreCartInnerServiceSMO storeCartInnerServiceSMOImpl;

    @Autowired
    private IStoreOrderCartInnerServiceSMO storeOrderCartInnerServiceSMOImpl;

    /**
     * @param storeCartPo 数据
     * @return 订单服务能够接受的报文
     */
    @Java110Transactional
    public ResponseEntity<String> delete(StoreCartPo storeCartPo) {

        //查询是否存在 购物车
        StoreCartDto storeCartDto = new StoreCartDto();
        storeCartDto.setShopId(storeCartPo.getShopId());
        storeCartDto.setCartId(storeCartPo.getCartId());
        List<StoreCartDto> storeCartDtos = storeCartInnerServiceSMOImpl.queryStoreCarts(storeCartDto);
        int flag = 1;
        if (!ListUtil.isNull(storeCartDtos)) {
            flag = storeCartInnerServiceSMOImpl.deleteStoreCart(storeCartPo);
        }
        if (flag < 1) {
            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
        }

        StoreOrderCartDto storeOrderCartDto = new StoreOrderCartDto();
        storeOrderCartDto.setShopId(storeCartPo.getShopId());
        storeOrderCartDto.setCartId(storeCartPo.getCartId());
        storeOrderCartDto.setStates(new String[]{StoreOrderCartDto.STATE_WAIT_BUY, StoreOrderCartDto.STATE_WAIT_HOUSE_KEEPING});
        List<StoreOrderCartDto> storeOrderCartDtos = storeOrderCartInnerServiceSMOImpl.queryStoreOrderCarts(storeOrderCartDto);
        if (!ListUtil.isNull(storeOrderCartDtos)) {
            StoreOrderCartPo storeOrderCartPo = new StoreOrderCartPo();
            storeOrderCartPo.setShopId(storeCartPo.getShopId());
            storeOrderCartPo.setCartId(storeCartPo.getCartId());
            flag = storeOrderCartInnerServiceSMOImpl.deleteStoreOrderCart(storeOrderCartPo);
        }
        if (flag < 1) {
            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
        }

        return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");

    }

}
